首页

欢迎

 

Welcome

欢迎来到这里, 这是一个学习数学、讨论数学的网站.

转到问题

请输入问题号, 例如: 2512

IMAGINE, THINK, and DO
How to be a scientist, mathematician and an engineer, all in one?
--- S. Muthu Muthukrishnan

Local Notes

Local Notes 是一款 Windows 下的笔记系统.

Local Notes 下载

Sowya

Sowya 是一款运行于 Windows 下的计算软件.

详情

下载 Sowya.7z (包含最新版的 Sowya.exe and SowyaApp.exe)


注: 自 v0.550 开始, Calculator 更名为 Sowya. [Sowya] 是吴语中数学的发音, 可在 cn.bing.com/translator 中输入 Sowya, 听其英语发音或法语发音.





注册

欢迎注册, 您的参与将会促进数学交流. 注册

在注册之前, 或许您想先试用一下. 测试帐号: usertest 密码: usertest. 请不要更改密码.


我制作的 slides

Problem

随机显示问题

Problèmes d'affichage aléatoires

计算数学 >> 数据结构
Questions in category: 数据结构 (Data Structure).

拓扑排序

Posted by haifeng on 2018-03-20 22:37:12 last update 2018-03-20 22:37:12 | Answers (0)


/**
* 拓扑排序(Topological sorting)
*
* 拓扑排序问题的定义: 给定图 G=(V,E), 将其顶点排成一列
* vi1,vi2,,vin, 这里 n 是顶点的个数.
* 要求满足下面的条件:
* 对所有边 (v,w)E, v 排在 w 的前面.
*
* 算法
* ====
* Step 1. 确定 in-degree 为 0 的顶点. 可以作为第一个顶点.
*         如果没有这样的顶点, 比如循环的图 A-->B-->C-->D-->A, 每个顶点的 in-degree > 0.
*         可以去掉某个边, 如成为: A-->B-->C-->D.
*
*         找到 in-degree=0 的顶点后, 将此顶点以及从该顶点出发的有向边删除.
*
*         Example:
*                  A--->B--->C
*                   \       /|
*                    \     / |   F
*                     \   /  |
*                      * *   v
*                       D--->E
*
*           delete A and the edges start from A, it becomes
*
*                        B--->C                            C
*                           /|             delete B       /|          delete C
*                          / |   F         ========>     / |   F      ========>
*                         /  |                          /  |
*                        *   v                         *   v
*                       D--->E                        D--->E
*
*           将 A 输出. 然后重复此过程.
*
*           output:  A ==> B ==> C ==> D ==> E ==> F
*
*           如果中途在 delete B 之后选择 F 而不是 C 输出, 那么也可以, 此时得到线性序列
*
*           output:  A ==> B ==> F ==> C ==> D ==> E
*
*/